/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ManagedBeans;

import ComponenteDatos.TipodocumentoidentidadFacadeLocal;
import ComponenteEntidad.Tipodocumentoidentidad;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;

/**
 *
 * @author Noemi
 */
@ManagedBean
@SessionScoped
public class ManagedBeanTipoDocumentoIdentidad implements Serializable {

    @EJB
    private TipodocumentoidentidadFacadeLocal tipodocumentoidentidadFacade;
    private Tipodocumentoidentidad objetoTipoDocumentoIdentidad;
    private Tipodocumentoidentidad objetoTipoDocumentoIdentidadCrear;
    private List<Tipodocumentoidentidad> lista;
    private List<SelectItem> objetoItems = new LinkedList<SelectItem>();
    private HashMap<Integer, Tipodocumentoidentidad> myobjeto = new HashMap<Integer, Tipodocumentoidentidad>();

    public ManagedBeanTipoDocumentoIdentidad() {
        objetoTipoDocumentoIdentidad = new Tipodocumentoidentidad();
        objetoTipoDocumentoIdentidad.setIdTipoDocumentoIdentidad(1);
        lista = new LinkedList<Tipodocumentoidentidad>();
        objetoTipoDocumentoIdentidadCrear = new Tipodocumentoidentidad();
        objetoTipoDocumentoIdentidadCrear.setTipodocDocumento("");
        objetoTipoDocumentoIdentidadCrear.setTipodocDescripcion("");
        objetoTipoDocumentoIdentidadCrear.setTipodocEstado(true);
    }

    public Tipodocumentoidentidad getObjetoTipoDocumentoIdentidad() {
        return objetoTipoDocumentoIdentidad;
    }

    public Tipodocumentoidentidad getObjetoTipoDocumentoIdentidad(int id) {
        return (Tipodocumentoidentidad) myobjeto.get(id);
    }

    public void setObjetoTipoDocumentoIdentidad(Tipodocumentoidentidad objetoTipoDocumentoIdentidad) {
        this.objetoTipoDocumentoIdentidad = objetoTipoDocumentoIdentidad;
    }

    public Tipodocumentoidentidad getObjetoTipoDocumentoIdentidadCrear() {
        return objetoTipoDocumentoIdentidadCrear;
    }

    public void setObjetoTipoDocumentoIdentidadCrear(Tipodocumentoidentidad objetoTipoDocumentoIdentidadCrear) {
        this.objetoTipoDocumentoIdentidadCrear = objetoTipoDocumentoIdentidadCrear;
    }

    public List<Tipodocumentoidentidad> getLista() {
        lista = new LinkedList<Tipodocumentoidentidad>();
        List<Tipodocumentoidentidad> listaTemporal = new LinkedList<Tipodocumentoidentidad>();
        listaTemporal = tipodocumentoidentidadFacade.findAll();
        for (int i = listaTemporal.size() - 1; i >= 0; i--) {
            if (listaTemporal.get(i).getTipodocEstado() == true) {
                lista.add(listaTemporal.get(i));
            }
        }
        return lista;
    }

    public void setLista(List<Tipodocumentoidentidad> lista) {
        this.lista = lista;
    }

    public List<SelectItem> getObjetoItems() {
        lista = new ArrayList<Tipodocumentoidentidad>();
        objetoItems = new LinkedList<SelectItem>();
        lista = tipodocumentoidentidadFacade.findAll();
        for (Tipodocumentoidentidad p : lista) {
            if (p.getTipodocEstado() == true) {
                myobjeto.put(p.getIdTipoDocumentoIdentidad(), p);
                objetoItems.add(new SelectItem(p, p.getTipodocDocumento()));
            }
        }
        return objetoItems;
    }

    public void setObjetoItems(List<SelectItem> objetoItems) {
        this.objetoItems = objetoItems;
    }

    public void insertar() {
        try {
            if (!verificarSiexiste(objetoTipoDocumentoIdentidadCrear.getTipodocDocumento())) {
                objetoTipoDocumentoIdentidadCrear.setTipodocEstado(true);

                tipodocumentoidentidadFacade.create(objetoTipoDocumentoIdentidadCrear);
                FacesMessage msg = new FacesMessage("Informacion", "Registro Ingresado");
                FacesContext.getCurrentInstance().addMessage(null, msg);
                objetoTipoDocumentoIdentidadCrear = new Tipodocumentoidentidad();
            } else {
                FacesMessage msg = new FacesMessage("Informacion", "Ya Existe Tipo Documento de Identidad");
                FacesContext.getCurrentInstance().addMessage(null, msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void editar() {
        try {
            tipodocumentoidentidadFacade.edit(objetoTipoDocumentoIdentidad);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void eliminar() {
        try {
            objetoTipoDocumentoIdentidad.setTipodocEstado(false);
            tipodocumentoidentidadFacade.edit(objetoTipoDocumentoIdentidad);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void onRowSelect(SelectEvent event) {
        FacesMessage msg = new FacesMessage("Tipo Documento de Identidad Seleccionado", ((Tipodocumentoidentidad) event.getObject()).getIdTipoDocumentoIdentidad().toString());
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public void onRowUnselect(UnselectEvent event) {
        FacesMessage msg = new FacesMessage("Tipo Documento de Identidad No seleccionado", ((Tipodocumentoidentidad) event.getObject()).getIdTipoDocumentoIdentidad().toString());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public boolean verificarSiexiste(String desc) {
        boolean existe = false;
        lista = new LinkedList<Tipodocumentoidentidad>();
        List<Tipodocumentoidentidad> listaTemporal = new LinkedList<Tipodocumentoidentidad>();
        listaTemporal = tipodocumentoidentidadFacade.findAll();
        for (int i = listaTemporal.size() - 1; i >= 0; i--) {
            if (listaTemporal.get(i).getTipodocDocumento().equalsIgnoreCase(desc) && listaTemporal.get(i).getTipodocEstado() == true) {
                existe = true;
            }
        }
        return existe;
    }
}
